home *** CD-ROM | disk | FTP | other *** search
/ CICA 1995 September (Japanese) / CICA Shareware for Windows CD-ROM (Walnut Creek) (September 1995) (Japanese) (Disc 2).iso / disc2 / patches / symantec / pro61.exe / MFCSAM.EXE / DOCTEMP / USERCODE.WMC < prev    next >
Encoding:
Text File  |  1993-09-22  |  8.4 KB  |  280 lines

  1. // Filename: USERCODE.WMC                                   
  2. // "DOCTEMP" Generated by Visual Programmer.                
  3. // Author:   Blue Sky                                       
  4.  
  5. // 
  6. // ***********************************************************************
  7. // Do not add code here. Add code in the .CPP file.
  8. // 
  9. // This file is maintained by the Switch-It Module.
  10. // As you make changes in your applications design,
  11. // this file is automatically updated, therefore you never modify this file.
  12. // 
  13. // 
  14. // 
  15. // For more information,
  16. // see the section "How code is generated" in the documentation.
  17. // 
  18. // ***********************************************************************
  19. // 
  20.  
  21.  
  22. // ----------------------------------------------------------------------------
  23. #ifndef WMCLASSONLY
  24. // ----------------------------------------------------------------------------
  25.  
  26.  
  27.  
  28.  
  29. // *************************************************************
  30. // Member Functions for Class: Cwm_MDICHILDBaseWnd
  31. // Base Class                : CMDIChildWnd
  32. // *************************************************************
  33.  
  34.  
  35. CString Cwm_MDICHILDBaseWnd::ms_strWndClass; //Window Class Name
  36.  
  37.  
  38. IMPLEMENT_DYNCREATE(Cwm_MDICHILDBaseWnd, CMDIChildWnd)
  39.  
  40. BEGIN_MESSAGE_MAP(Cwm_MDICHILDBaseWnd, CMDIChildWnd)
  41.  
  42.     ON_REGISTERED_MESSAGE(wPrivateMessage,SimHandlePrivateMessage)
  43.     ON_WM_MDIACTIVATE()
  44.     ON_WM_NCDESTROY()
  45.  
  46. END_MESSAGE_MAP()
  47.  
  48.  
  49.  
  50. Cwm_MDICHILDBaseWnd::Cwm_MDICHILDBaseWnd()
  51.     : CMDIChildWnd()
  52. {
  53.  
  54.     ms_pToolbarTop= ms_pToolbarBottom=ms_pToolbarLeft=ms_pToolbarRight=NULL;
  55.     ms_pWndClient = NULL;
  56.  
  57.  
  58.     if (ms_strWndClass.IsEmpty())
  59.        SimRegisterClass();
  60.  
  61. }
  62.  
  63.  
  64.  
  65. Cwm_MDICHILDBaseWnd::~Cwm_MDICHILDBaseWnd()
  66. {
  67. }
  68.  
  69.  
  70.  
  71. BOOL Cwm_MDICHILDBaseWnd::SimRegisterClass()
  72. {
  73.     WNDCLASS    WndClass;
  74.  
  75.     WndClass.lpszClassName = "BLD_MDICHILD";
  76.     WndClass.style         = CS_DBLCLKS;
  77.     WndClass.cbClsExtra    = 0;
  78.     WndClass.cbWndExtra    = 0;
  79.     WndClass.hInstance     = AfxGetInstanceHandle();
  80.     WndClass.hIcon         = LoadIcon(AfxGetResourceHandle(),"MOBIUS");
  81.     WndClass.hCursor       = LoadCursor(NULL,IDC_ARROW);
  82.     WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  83.     WndClass.lpszMenuName  = NULL;
  84.  
  85.     if (!ms_strWndClass.IsEmpty())
  86.         return TRUE;                      // Already registered
  87.  
  88.     ms_strWndClass = AfxRegisterWndClass(WndClass.style,
  89.        WndClass.hCursor, WndClass.hbrBackground, WndClass.hIcon);
  90.  
  91.     if (ms_strWndClass.IsEmpty())
  92.         return FALSE;
  93.     else
  94.         return TRUE;
  95. }
  96.  
  97.  
  98.  
  99. BOOL Cwm_MDICHILDBaseWnd::SimInitWindow(CWnd *pAParent)
  100. {
  101.     CREATESTRUCT        sCr;
  102.     RECT                r;
  103.  
  104.     pAParent = TheApp.m_pMainWnd; //Parent must be the main window
  105.     if (ms_strWndClass.IsEmpty())
  106.        return FALSE;
  107.  
  108.     sCr.lpCreateParams  = NULL;
  109.     sCr.hInstance       = AfxGetInstanceHandle();
  110.     sCr.dwExStyle       = 0;
  111.     sCr.lpszClass       = ms_strWndClass;
  112.     sCr.lpszName        = "MDICHILD";
  113.     sCr.style           = WS_CHILD | WS_CAPTION | WS_THICKFRAME | WS_CLIPSIBLINGS | WS_SYSMENU;
  114.     sCr.hwndParent      = pAParent ? pAParent->GetSafeHwnd() : (HWND)NULL;
  115.     sCr.x               = CW_USEDEFAULT;
  116.     sCr.y               = 0;
  117.     sCr.cx              = CW_USEDEFAULT;
  118.     sCr.cy              = 0;
  119.     sCr.hMenu           = NULL;
  120.     ms_hSubMenu             = 0;
  121.  
  122.     r.left              = sCr.x;
  123.     r.top               = sCr.y;
  124.     if (sCr.cx==CW_USEDEFAULT)
  125.         {
  126.         r.right         = CW_USEDEFAULT;
  127.         r.bottom        = 0;
  128.         }
  129.     else
  130.         {
  131.         r.right         = sCr.cx+sCr.x;
  132.         r.bottom        = sCr.cy+sCr.y;
  133.         }
  134.  
  135.     if (!Create(ms_strWndClass,sCr.lpszName,
  136.         sCr.style | WS_VISIBLE,
  137.         r,NULL,NULL))
  138.         {
  139.         BLDDisplayMessage(::GetActiveWindow(),BLD_CannotCreateWindow,"MDICHILD",
  140.                           MB_OK | MB_ICONASTERISK);
  141.         return FALSE;
  142.         }
  143.     return TRUE;
  144. }
  145.  
  146.  
  147. // PreCreateWindow - overridden for window to get correct properties
  148. BOOL Cwm_MDICHILDBaseWnd::PreCreateWindow(CREATESTRUCT& sCr)
  149. {
  150.     if (!sCr.lpszClass&&bPreCreateCheck)
  151.         {
  152.         sCr.dwExStyle   = 0;
  153.         sCr.lpszClass   = ms_strWndClass;
  154.         sCr.lpszName    = "MDICHILD";
  155.         sCr.style       = WS_CHILD | WS_CAPTION | WS_THICKFRAME | WS_CLIPSIBLINGS | WS_SYSMENU;
  156.  
  157.         ms_hSubMenu             = 0;
  158.         }
  159.     return CMDIChildWnd::PreCreateWindow(sCr);
  160. }
  161.  
  162.  
  163. //When MDI child window gets focus, this function tells MDI frame window
  164. //to return specific submenu from GetWindowMenuPopup instead of MFC default
  165. void Cwm_MDICHILDBaseWnd::OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd,
  166.       CWnd* pDeactivateWnd)
  167. {
  168.     if(bActivate)
  169.         {
  170.         if(ms_hSubMenu)
  171.             {
  172.             Cwm_MainWnd *pCwm_MainWnd = (Cwm_MainWnd *)TheApp.m_pMainWnd;
  173.             pCwm_MainWnd->Cwm_SetWindowMenuPopup(ms_hSubMenu);
  174.             }
  175.         if(!m_hMenuShared)
  176.             {
  177.             CMDIFrameWnd* pFrame = GetMDIFrame();
  178. #ifdef WIN32
  179.             ::SendMessage(pFrame->m_hWndMDIClient, WM_MDISETMENU,
  180.                 (WPARAM)pFrame->m_hMenuDefault,(LPARAM)pFrame->GetWindowMenuPopup(pFrame->m_hMenuDefault));
  181. #else
  182.             ::SendMessage(pFrame->m_hWndMDIClient, WM_MDISETMENU, 0,
  183.                 MAKELONG(pFrame->m_hMenuDefault, pFrame->GetWindowMenuPopup(pFrame->m_hMenuDefault)));
  184. #endif
  185.             pFrame->SendMessage(wPrivateMessage,SIM_RELOADACCELERATORS,(LONG)0);
  186.             pFrame->DrawMenuBar();
  187.             return; //override MFC default
  188.             }
  189.         else
  190.             {
  191.             BLDLoadAccelerators(GetMDIFrame(),IDR_SIMPLE);
  192.             }
  193.         }
  194.     else
  195.         {
  196.         CMDIFrameWnd* pFrame = GetMDIFrame();
  197. #ifdef WIN32
  198.         ::SendMessage(pFrame->m_hWndMDIClient,WM_MDISETMENU,
  199.             (WPARAM)pFrame->m_hMenuDefault,(LPARAM)pFrame->GetWindowMenuPopup(pFrame->m_hMenuDefault));
  200. #else
  201.         ::SendMessage(pFrame->m_hWndMDIClient, WM_MDISETMENU, 0,
  202.             MAKELONG(pFrame->m_hMenuDefault, pFrame->GetWindowMenuPopup(pFrame->m_hMenuDefault)));
  203. #endif
  204.         pFrame->SendMessage(wPrivateMessage,SIM_RELOADACCELERATORS,(LONG)0);
  205.         pFrame->DrawMenuBar();
  206.         return; //override MFC default
  207.         }
  208.     CMDIChildWnd::OnMDIActivate(bActivate,pActivateWnd,pDeactivateWnd);
  209. }
  210.  
  211.  
  212.  
  213. void Cwm_MDICHILDBaseWnd::OnNcDestroy()
  214. {
  215.     if(m_hMenuShared)
  216.         ::DestroyMenu(m_hMenuShared);
  217.     CMDIChildWnd::OnNcDestroy();
  218. }
  219.  
  220.  
  221.  
  222. LRESULT Cwm_MDICHILDBaseWnd::SimHandlePrivateMessage(WPARAM wParam,LPARAM lParam)
  223. {
  224.     LPBLDSetChildDialog lpSetChildDialog;
  225.     switch(wParam)
  226.         {
  227.     case SIM_GETCHILDDIALOG:
  228.         switch(LOWORD(lParam))
  229.             {
  230.         case 0: //Client area controls
  231.             return (LRESULT)(LPSTR)(CSimClientDlg*)ms_pWndClient;
  232.         case CBRS_RIGHT:
  233.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarRight;
  234.         case CBRS_LEFT:
  235.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarLeft;
  236.         case CBRS_BOTTOM:
  237.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarBottom;
  238.         case CBRS_TOP:
  239.             return (LRESULT)(LPSTR)(CSimToolbar*)ms_pToolbarTop;
  240.             }
  241.         break;
  242.     case SIM_SETCHILDDIALOG:
  243.         lpSetChildDialog = (LPBLDSetChildDialog)lParam;
  244.         switch(lpSetChildDialog->nStyle)
  245.             {
  246.         case 0: //Client area controls
  247.             ms_pWndClient     = (CSimClientDlg*)lpSetChildDialog->pWnd;
  248.             break;
  249.         case CBRS_RIGHT:
  250.             ms_pToolbarRight  = (CSimToolbar*)lpSetChildDialog->pWnd;
  251.             break;
  252.         case CBRS_LEFT:
  253.             ms_pToolbarLeft   = (CSimToolbar*)lpSetChildDialog->pWnd;
  254.             break;
  255.         case CBRS_BOTTOM:
  256.             ms_pToolbarBottom = (CSimToolbar*)lpSetChildDialog->pWnd;
  257.             break;
  258.         case CBRS_TOP:
  259.             ms_pToolbarTop    = (CSimToolbar*)lpSetChildDialog->pWnd;
  260.             break;
  261.             }
  262.         break;
  263.     case SIM_RELOADACCELERATORS:
  264.         break;
  265.     case SIM_LOADACCELTABLE:
  266.         if(m_hAccelTable)
  267.             m_hAccelTable=0;
  268.         if(lParam)
  269.             LoadAccelTable(MAKEINTRESOURCE((int)lParam));
  270.         break;
  271.         }
  272.     return 0;
  273. }
  274.  
  275.  
  276. // ----------------------------------------------------------------------------
  277. #endif //WMCLASSONLY
  278. // ----------------------------------------------------------------------------
  279.  
  280.